﻿#region License
// ----------------------------------------------------------------------
// IXcoConfigStringInterpreter.cs
// 
// This file is part of the XcoAppSpace package which is developed 
// and licensed by www.xcoordination.org. 
//
// Copyright (C) 2009: Markus Karolus, Thomas Scheller, Ralf Westphal
//
// This program is free software; you can redistribute it and/or
// modify it under the terms of the GNU General Public License version 2
// as published by the Free Software Foundation.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with this program; if not, write to the Free Software
// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
// or  http://www.gnu.org/licenses/gpl-2.0.html.
//
// Linking this library statically or dynamically with other modules is
// making a combined work based on this library.  Thus, the terms and
// conditions of the GNU General Public License cover the whole
// combination.
// 
// As a special exception, the copyright holders of this library give you
// permission to link this library with independent modules to produce an
// executable, regardless of the license terms of these independent
// modules, and to copy and distribute the resulting executable under
// terms of your choice, provided that you also meet, for each linked
// independent module, the terms and conditions of the license of that
// module.  An independent module is a module which is not derived from
// or based on this library.  If you modify this library, you may extend
// this exception to your version of the library, but you are not
// obligated to do so. If you do not wish to do so, delete this
// exception statement from your version.
// ----------------------------------------------------------------------
#endregion

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace XcoAppSpaces.Contracts.Service
{
	/// <summary>
	/// Interface for classes that are able to interpret a space configuration.
	/// </summary>
	public interface IXcoConfigStringInterpreter
	{
		/// <summary>
		/// Returns a list of the keys that can be understood by this interpreter.
		/// </summary>
		IEnumerable<string> InterpretKeys { get; }

		/// <summary>
		/// Interprets the given configuration string and, according to the configuration string elements,
		/// alters the space configuration (e.g. by adding new services or altering the configuration of already
		/// added services).
		/// </summary>
		/// <param name="configStringElements">Dictionary of configuration elements (key-value pairs)</param>
        /// <returns>Configuration for the service</returns>
        XcoServiceConfiguration Interpret(Dictionary<string, string> configStringElements);
	}
}
